/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vistas;

import beans.Categoria;
import daos.classes.CategoriaDAOImp;
import daos.interfaces.CategoriaDAO;

import beans.Producto;
import daos.classes.ProductoDAOImp;
import daos.interfaces.ProductoDAO;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;

/**
 *
 * @author curso
 */
public class Ventana extends JFrame{
    private Map<String,JButton> botones;
    private CategoriaDAO dao;
    private ProductoDAO daop;
    private JPanel panel;
    private JList lista;
    private DefaultListModel listModel;
    {
        dao=new CategoriaDAOImp();
        try {
            dao.conectar();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
        
        daop=new ProductoDAOImp();
        try {
            daop.conectar();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
        
    }
    public Ventana() throws HeadlessException {
        super("Categoria");
        setResizable(false);
        setSize(300,200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        panel=new JPanel();
        lista=new JList();
        panel.setLayout(new GridLayout(6, 1,5,5));
        botones=new TreeMap<String, JButton>();
        botones.put("alta",new JButton("Alta"));
        botones.put("baja",new JButton("Baja"));
        botones.put("verTodos",new JButton("Ver todos"));
        botones.put("actualizar",new JButton("Actualizar"));
        botones.put("verProductos",new JButton("Ver productos"));
        botones.put("salir",new JButton("Salir"));
        for(String temp:botones.keySet()){
            panel.add(botones.get(temp));        
        }
        botones.get("salir").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                   dao.desconectar();
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                    
                }
                JOptionPane.showMessageDialog(null, "Adios :)");
                System.exit(0);
            }
        });
        
        botones.get("alta").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String nombre=JOptionPane.showInputDialog("Nombre de la categoria: ");
                Categoria c=new Categoria(nombre);
                try {
                    dao.insertar(c);
                    JOptionPane.showMessageDialog(null, "Se inserto correctamente");
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
                        
            }
        });
        botones.get("baja").addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               try {
                   String s=JOptionPane.showInputDialog("Da el id de la categoria");
                   int id_categoria=0;
                   if(s!=null)
                         id_categoria= Integer.parseInt(s);
                    int x=dao.borrar(id_categoria);
                    if(x>0)
                        JOptionPane.showMessageDialog(null, "El valor se borro correctamente");
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
        });
        
        
        
        botones.get("verTodos").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    listModel.clear();
                    java.util.List<Categoria> cat=dao.verCategorias();
                    for(Categoria c: cat){
                         listModel.addElement(c);                         
                    }
                    lista.setModel(listModel);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
        
        
        botones.get("verProductos").addActionListener(new ActionListener() {

              @Override
            public void actionPerformed(ActionEvent e) {
              
               try {        
               
                   
                    Categoria cat=(Categoria)lista.getSelectedValue();   
                        listModel.clear();
                    java.util.List<Producto> producto = daop.verProductos(cat.getId_categoria());                    
                  
                    for(Producto p: producto){
                        listModel.addElement(p);
                    }
                    lista.setModel(listModel);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }        
            }
        });
        botones.get("actualizar").addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               new Actualizar();
            }
        });
        
        lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        listModel = new DefaultListModel();
        add(BorderLayout.EAST,panel);
        add(BorderLayout.NORTH,new JLabel("Mi aplicación"));
        add(BorderLayout.CENTER,new JScrollPane(lista));
        setVisible(true);
    }
    public static void main(String[] args) {
        new Ventana();
      
              
    }
    
    
}
